package repo

import (
	"gorm.io/driver/sqlite"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

var db *gorm.DB

type Dev struct {
	//与das保持一致的自定义ID
	ID string `gorm:"primaryKey;type:varchar(32)"`
	//设备型号
	Model string `gorm:"type:varchar(64);not null"`
	//厂家定义的设备标识符（不允许用户通过API修改）,一般由心跳回调可以拿到，如果是通过用户添加的设备，没有此标识，则同主键ID
	DeviceId string `gorm:"type:varchar(64);"`
	//设备IP
	IP string `gorm:"type:varchar(32);not null"`
	//任意信息，如设备密码
	Context string `gorm:"type:varchar(512)"`
	//是否为动态发现的设备 （不允许用户通过API修改）
	IsDynamic bool `gorm:"not null"`
}

func init() {
	gormDb, err := gorm.Open(sqlite.Open("gw.db"), &gorm.Config{
		Logger:      logger.Default.LogMode(logger.Info),
		PrepareStmt: true,
	})
	if err != nil {
		panic(err)
	}

	db = gormDb
	if err = db.AutoMigrate(&Dev{}); err != nil {
		panic(err)
	}

	devices := make([]Dev, 0)
	err = db.Find(&devices).Error
	if err != nil {
		panic(err)
	}
	initCache(devices)
}
